home *** CD-ROM | disk | FTP | other *** search
/ SGI Developer Toolbox 6.1 / SGI Developer Toolbox 6.1 - Disc 4.iso / documents / RFC / rfc886.txt < prev    next >
Text File  |  1994-08-01  |  31KB  |  1,003 lines

  1. Request For Comments:  886 
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.  
  10.  
  11.  
  12.  
  13.  
  14.          Proposed Standard for Message Header Munging
  15.  
  16.  
  17.                Thu Dec 15 03:37:52 1983
  18.  
  19.  
  20.                Marshall T. Rose
  21.  
  22.         Department of Information and Computer Science
  23.            University of California, Irvine
  24.                Irvine, CA 92717
  25.  
  26.              MRose.UCI@Rand-Relay
  27.  
  28.  
  29.  
  30.  
  31.     This memo proposes a standard for the ARPA Internet community. If
  32.     this proposal is adopted, hosts on the ARPA Internet that do message
  33.     translation would be expected to adopt and implement this standard.
  34.  
  35.  
  36.  
  37.  
  38.  
  39.  
  40.  
  41.  
  42.  
  43.  
  44.  
  45.  
  46.  
  47.  
  48.  
  49.  
  50.  
  51.  
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
  58.  
  59.  
  60. Request For Comments:  886                      M. Rose
  61. Proposed Standard for Message Header Munging                 UCI
  62.  
  63.  
  64.  
  65.                  Introduction
  66.  
  67.     This memo describes the rules that are to be used when mail is
  68.     transformed from one standard format to another.  The scope of this
  69.     memo is limited to text messages (computer network mail, or
  70.     electronic mail) that traverse the ARPA Internet.  This memo is not
  71.     presented as a replacement or amendment for the "Standard for the
  72.     Format of ARPA Internet Text Messages", RFC822.  Rather, this memo
  73.     focuses on a particular aspect of mail, and provides a conceptual
  74.     and practical basis for implementors of transport agents and user
  75.     agents which support message munging.
  76.  
  77.     Although this memo has been specifically prepared for use with the
  78.     822 standard, an understanding of the 822 standard is not required
  79.     to make use of this memo.  The remainder of this section reminds
  80.     the reader of some key concepts presented in the 822 standard, and
  81.     how they relate to the perspective of this memo.
  82.  
  83.     Messages are viewed as consisting of an envelope and contents.  The
  84.     envelope is manipulated solely by transport agents, and contains
  85.     the information required by the transport agents to deliver the
  86.     message to its recipients.  Although this memo does not address
  87.     itself directly to the envelope, we shall see that some of the
  88.     rules discussed later are applicable to the envelope.
  89.  
  90.     The contents of the message consists of a rigorously structured
  91.     part, known as the headers, followed by a freely formated part,
  92.     called the body.  The message body is completely uninteresting to
  93.     us.  Our emphasis is strictly on the headers of the message.  Each
  94.     header in the message consists of a field, its value, and a
  95.     terminating end-of-line sequence.  The 822 standard discusses,
  96.     among other things, continuation lines, the syntax that is used to
  97.     distinguish between fields and values, and the syntax and semantics
  98.     of the values of various fields.  For our part, we shall concern
  99.     ourselves only with the notion that the headers section consists of
  100.     one or more headers, which are divided into one or more field/value
  101.     pairs.
  102.  
  103.     The term "message munging" refers to the actions taken by a
  104.     transport or user agent to transform the contents of a message from
  105.     conformance with one standard format to another.  The 822 standard
  106.     refers to this as "Network-Specific Transformation".  Other phrases
  107.     might be "header munging" or "mail filtering".  Regardless of the
  108.     term used, the key notion is that this action transforms a message
  109.     from its current format (the source message) to the structure
  110.     required by the target standard.  A "munging agent", for the
  111.     purposes of this memo, is an entity which performs message munging.
  112.     A munging agent may be part of either a transport or user agent.
  113.  
  114.  
  115.  
  116.  
  117. Page 1
  118.  
  119. Request For Comments:  886                      M. Rose
  120. Proposed Standard for Message Header Munging                 UCI
  121.  
  122.  
  123.  
  124.                   Background
  125.  
  126.     As more networks connect into the ARPA Internet community, their
  127.     users will exchange computer mail messages with other Internet
  128.     hosts.  Although the 822 standard must be strictly adhered to for
  129.     mail that traverses the ARPA Internet, other networks might not
  130.     internally adopt this standard.  It is nevertheless desirable to
  131.     permit mail to flow between hosts which internally conform to the
  132.     standard and those which do not.  The 822 standard is very clear to
  133.     indicate that:
  134.  
  135.      "This standard is NOT intended to dictate the internal formats
  136.      used by sites, the specific message system features that they
  137.      are expected to support, or any of the characteristics of user
  138.      interface programs that create or read messages."
  139.  
  140.     This plainly states that even hosts within the ARPA Internet, may
  141.     opt to use a different standard than 822 for their internal use,
  142.     but they are expressly required to use the 822 standard when
  143.     transferring mail to other hosts in the ARPA Internet.  As such, it
  144.     is not difficult to imagine message munging becoming a common
  145.     activity among transport and user agents.
  146.  
  147.     There are other reasons why message munging may become a widespread
  148.     practice.  An example from CSnet will serve here.  The CSnet relays
  149.     provide authorized access for mail services to the ARPA Internet
  150.     for the CSnet phonenet sites.  CSnet sites are not registered with
  151.     the NIC, and hence are often absent from the host tables of ARPA
  152.     Internet sites.  As a result, addresses for mailboxes on CSnet
  153.     phonenet sites are unknown to ARPA Internet sites.  From an ARPA
  154.     Internet site, it would be impossible to send messages to these
  155.     addresses, since the local transport agent has no handle on the
  156.     destination hosts of the phonenet mailboxes.  Obviously, even
  157.     replying to a such a message is simply not possible.  To solve this
  158.     problem, the transport agents on the CSnet relays perform message
  159.     munging on mail destined for the ARPA Internet.  Phonenet addresses
  160.     of the form "mbox@host" are transformed to "mbox.host@relay", where
  161.     "relay" is the ARPA Internet host name of the relay performing the
  162.     transformation.  Other addresses are left alone.  Agents throughout
  163.     the ARPA Internet are now able to process these addresses, since
  164.     the host-part is a known ARPA Internet host.
  165.  
  166.     The source-routing solution to this problem will hopefully be
  167.     replaced by domain handling when domains are implemented in the ARPA
  168.     Internet.  When this is the case, phonenet addresses of the form
  169.     "mbox@host" will become "mbox@host.CSNET".  Despite this change,
  170.     (which cannot help but be for the better, as the use of
  171.     source-routing leads to a plethora of problems), message munging
  172.     will still occur as it will most likely be necessary to add domain
  173.     names during message transmission (see section 6.2.2 of the 822
  174.  
  175.  
  176. Page 2
  177.  
  178. Request For Comments:  886                      M. Rose
  179. Proposed Standard for Message Header Munging                 UCI
  180.  
  181.  
  182.     standard).
  183.  
  184.     For an alternate reason, consider that it is not unlikely for users
  185.     to wish to transform mail from their archives which conforms to an
  186.     older standard to the current standard.  There could be many
  187.     reasons for this, although a common one would be that a user wishes
  188.     to re-introduce the message into the transport system.  Although
  189.     the aged message was perfectly valid when it was composed (e.g., in
  190.     the days of the 733 standard), it might no longer conform to the
  191.     current standard (i.e., 822).  In this case, a user agent would
  192.     have to perform message munging, in order to make the message
  193.     acceptable to the local transport agent.
  194.  
  195.     To summarize, even under the most "homogeneous" of environments,
  196.     message munging will still be required on the part of transport and
  197.     user agents, under certain conditions.
  198.  
  199.     Section 3.4.10 of the 822 standard briefly discusses the topic of
  200.     "Network-Specific Transformations".  In short, the 822 standard
  201.     envisions a message traversing net-A to reach net-B as going
  202.     through three phases:
  203.  
  204.     o Transformation
  205.       The message is made to conform to net-A's standards
  206.  
  207.     o Transformation Reversal
  208.       Net-A's idiosyncrasies are removed and the message now
  209.       conforms to the 822 standard
  210.  
  211.     o Transformation
  212.       The message is made to conform to net-B's standards
  213.  
  214.     This memo concerns itself solely with this section of the 822
  215.     standard.  The 822 standard presents end-of-line sequences as an
  216.     example of an area where transformation might occur.  Although this
  217.     is a valid concern, our emphasis deals with constructs of higher
  218.     semantics: fields and structured field values.
  219.  
  220.  
  221.  
  222.  
  223.  
  224.  
  225.  
  226.  
  227.  
  228.  
  229.  
  230.  
  231.  
  232.  
  233.  
  234.  
  235. Page 3
  236.  
  237. Request For Comments:  886                      M. Rose
  238. Proposed Standard for Message Header Munging                 UCI
  239.  
  240.  
  241.  
  242.                  Scope
  243.  
  244.     This memo does not specify the particular transformation rules that
  245.     should be used when munging a message from one standard to another.
  246.  
  247.     Rather, this memo attempts to make clear the policies that are to
  248.     be followed when implementing any munging agent for the ARPA
  249.     Internet.  The derivation of the formulas specific to message
  250.     munging between two given standards is left to the implementors of
  251.     such munging systems or to the writers of future RFCs.  As such,
  252.     this memo can be considered to present the philosophy and
  253.     conceptual basis of message munging in the ARPA Internet.
  254.  
  255.      NOTE:  It is critical that this position be understood.  The
  256.      actual policies used by domain-specific munging agents is
  257.      completely beyond the scope of this memo.
  258.  
  259.     For ease of explanation, some of the examples in this memo use
  260.     message munging between the ARPA Internet and the USENET
  261.     distribution network as an example.  This memo should NOT be
  262.     considered to specify how this particular munging activity should
  263.     take place.  Instead, this context has been chosen for its
  264.     familiarity and simplicity.
  265.  
  266.  
  267.  
  268.              Message Decomposition
  269.  
  270.     A munging agent concerns itself with transforming a message in
  271.     conformance with a source standard to a message in conformance with a
  272.     target standard.  This transformation occurs at various levels.  Four
  273.     of these are presented here.
  274.  
  275.  
  276.     o Field Transformation
  277.  
  278.      For two standards, some fields may convey identical semantics
  279.      but have different names.  As standards progress, for
  280.      example, the names of fields may change, but the presence of
  281.      those fields and their contents continue to have the same
  282.      meaning.  For example, prior to 822 standard, some mailers
  283.      considered the Remailed- prefix to have semantics equivalent
  284.      to the 822 standard's Resent- prefix.  In this circumstance,
  285.      one aspect of message munging would be to simply substitute
  286.      the field names.
  287.  
  288.  
  289.     o Value Transformation
  290.  
  291.      The value of certain fields may be viewed as containing
  292.  
  293.  
  294. Page 4
  295.  
  296. Request For Comments:  886                      M. Rose
  297. Proposed Standard for Message Header Munging                 UCI
  298.  
  299.  
  300.      structured components.  The syntax and semantics of these
  301.      components may differ significantly between two formats.  In
  302.      this circumstance, one aspect of message munging would be to
  303.      transform components from one representation to another.
  304.  
  305.  
  306.     o Field/Value Combination
  307.  
  308.      The semantics of a given header in a particular standard may
  309.      not be directly expressed using a single header from another
  310.      standard.  In this circumstance, one aspect of message munging
  311.      would be to map the field/value of a header in the source
  312.      message to any number of headers in the target message (or
  313.      vice-versa).  As expected, further complication could result
  314.      by performing value transformation in addition to one-to-many
  315.      or many-to-one field transformation.
  316.  
  317.  
  318.     o Header Ordering
  319.  
  320.      Some standards may require that fields appear in a particular
  321.      order in the headers part of the message.  Others make no
  322.      requirements as to the order in which the fields appear.  In
  323.      this circumstance, one aspect of message munging from the
  324.      latter to the former standard would be to capture the essential
  325.      information from the source message in order to construct the
  326.      first field of the target message. As expected, further
  327.      complication could result by requiring several field/values be
  328.      consulted in the source message before sufficient context is
  329.      present to construct the first field of the target message.
  330.  
  331.  
  332.  
  333.  
  334.  
  335.  
  336.  
  337.  
  338.  
  339.  
  340.  
  341.  
  342.  
  343.  
  344.  
  345.  
  346.  
  347.  
  348.  
  349.  
  350.  
  351.  
  352.  
  353. Page 5
  354.  
  355. Request For Comments:  886                      M. Rose
  356. Proposed Standard for Message Header Munging                 UCI
  357.  
  358.  
  359.  
  360.                 Canonical Forms
  361.  
  362.     Fundamental to the activity of transformation is the notion of a
  363.     canonical form.  For a given message standard, each field and
  364.     structured field value may be thought of as an object with a
  365.     particular semantics that is representable by one or more strings.
  366.     That is, each of these strings has an identical semantics, as they
  367.     all refer to the same object.  For example, in terms of the 822
  368.     standard, the two strings
  369.  
  370.     The Protocol Police <NetSer@UCI>
  371.  
  372.     NetSer@UCI
  373.  
  374.     are semantically equivalent.  For the purposes of this memo, a
  375.     fully-qualified canonical form of an object is thought of as the
  376.     simplest string that represents the full and complete meaning of an
  377.     object.  The meaning of "simple" is, of course, open to
  378.     interpretation.  In some cases, "simplest" may mean "shortest".  In
  379.     other cases, a longer, but unabbreviated string may be "simpler"
  380.     than a shorter string. Regardless of this, a canonical form is a
  381.     representation of an object.  This representation contains the
  382.     smallest amount of information required to fully describe the
  383.     meaning of the object.
  384.  
  385.     It is not difficult to determine what a canonical form should
  386.     describe for different objects.  In terms of the 822 standard, the
  387.     following should be considered as minimal definitions of canonical
  388.     forms:
  389.  
  390.     object        specifies    contains
  391.     ------        ---------    --------
  392.     field        field-name    name
  393.     address        mailbox        local-part
  394.                     domain-part
  395.     date        date-time     date-part
  396.                     time-part
  397.  
  398.     In terms of USENET, the following might be considered as minimal
  399.     definitions of canonical forms:
  400.  
  401.     object        specifies    contains
  402.     ------        ---------    --------
  403.     field        field-name    name
  404.     address        mailbox        user
  405.                     route
  406.     date        date-time     date-part
  407.                     time-part
  408.  
  409.      NOTE:  This memo clearly has no authority to specify the
  410.  
  411.  
  412. Page 6
  413.  
  414. Request For Comments:  886                      M. Rose
  415. Proposed Standard for Message Header Munging                 UCI
  416.  
  417.  
  418.      minimal canonical forms for USENET.  The above table is listed
  419.      solely for the benefit of the examples which follow.
  420.  
  421.     Conceptually, transformation of fields and structured field values
  422.     occurs between canonical forms.  That is, to transform an address,
  423.     one reduces the string representing the object to its canonical
  424.     form, to capture the essence of its meaning, and this form is then
  425.     transformed, somehow, to the equivalent canonical form for the
  426.     target standard.  This target canonical form can later be output
  427.     using a string representation.
  428.  
  429.      NOTE:  This memo does not require that canonical forms be
  430.      represented or otherwise implemented as strings.  Nor does
  431.      this standard require that strings be used during the
  432.      transformation process. Thinking of a canonical form as a
  433.      string is a convenient formalism only, not an implementational
  434.      requirement.
  435.  
  436.  
  437.  
  438.  
  439.  
  440.  
  441.  
  442.  
  443.  
  444.  
  445.  
  446.  
  447.  
  448.  
  449.  
  450.  
  451.  
  452.  
  453.  
  454.  
  455.  
  456.  
  457.  
  458.  
  459.  
  460.  
  461.  
  462.  
  463.  
  464.  
  465.  
  466.  
  467.  
  468.  
  469.  
  470.  
  471. Page 7
  472.  
  473. Request For Comments:  886                      M. Rose
  474. Proposed Standard for Message Header Munging                 UCI
  475.  
  476.  
  477.  
  478.              Transformation Rules
  479.  
  480.     All of the forms of message decomposition discussed above may now
  481.     be viewed as transformation between canonical forms.  Hence, it now
  482.     becomes necessary to consider how canonical forms should be
  483.     manipulated during transformation.  That is, what rules are to be
  484.     followed when constructing an equivalent canonical form?  There are
  485.     several guidelines that must be followed, that we will characterize
  486.     in the following fashion:
  487.  
  488.  
  489.     o Preservation of information
  490.  
  491.      All attempts must be made to preserve all information
  492.      contained in the original canonical form.  This information
  493.      can be highly useful to the recipients of munged messages.
  494.      Obviously, for two widely-differing formats, this may not be
  495.      possible.  For example, some standards may not have a group
  496.      addressing notation such as the one present in the 822
  497.      standard, e.g., the notation
  498.  
  499.         List: Support@UCI, ZOTnet@UCI;
  500.  
  501.      might not be permitted.  If one were to consider membership in
  502.      a group as part of an address' canonical form, then this
  503.      portion of the canonical form could not be transformed to the
  504.      other standard.
  505.  
  506.      The 822 standard supports a liberal commenting convention
  507.      which might prove quite useful in preserving information.
  508.      Implementors may wish to consider capturing the original
  509.      information in commentary text.  For example, if the USENET
  510.      address
  511.  
  512.         mark@cbosgd.UUCP (Mark Horton)
  513.  
  514.      had the USENET canonical of
  515.  
  516.          user:  mark
  517.             route:  ucbvax!ihnp4!cbosgd
  518.  
  519.      and if the corresponding 822 canonical was
  520.  
  521.        local-part:    ucbvax!ihnp4!cbosgd!mark
  522.       domain-part:    USENET.UCI
  523.  
  524.      then it would not be unreasonable for an implementation to
  525.      output this canonical form as
  526.  
  527.         "mark@cbosgd.UUCP" <ucbvax!ihnp4!cbosgd!mark@USENET.UCI>
  528.  
  529.  
  530. Page 8
  531.  
  532. Request For Comments:  886                      M. Rose
  533. Proposed Standard for Message Header Munging                 UCI
  534.  
  535.  
  536.  
  537.           NOTE:  Implementors should exercise extreme caution in
  538.           using a policy such as this.  Information placed between
  539.           commentary delimiters must still conform to the target
  540.           standard at the syntactic level.
  541.  
  542.      Note however that in the above example, the commentary
  543.      information "(Mark Horton)" was discarded.  This practice is
  544.      strongly discouraged.  Although the canonical form for an
  545.      object does not rely on commentary information as a necessary
  546.      part, implementors are encouraged to preserve this information
  547.      whenever possible.
  548.  
  549.      Finally, preservation of information requires preservation of
  550.      case at all costs.  Only under the most restrictive of
  551.      circumstances should an implementation change the case of the
  552.      strings output for a canonical form.
  553.  
  554.  
  555.     o Re-Formatting
  556.  
  557.      Ideally, the target message should have the exact horizontal
  558.      and vertical padding as the source message.  Because a string
  559.      representing the source canonical form of an object may not be
  560.      of the same length as the string representing the target
  561.      canonical form, the number of characters on each physical and
  562.      logical line in the headers may be different.
  563.  
  564.      The 822 standard supports a header folding convention which
  565.      permits long field/value pairs to be represented on more than
  566.      one physical line.  When a new canonical form is output to the
  567.      target message, it is possible that the resulting field/value
  568.      pair may be longer than the number of characters that
  569.      antiquated display devices can present on a single line. The
  570.      822 standard suggests 65 or 72 characters-per-line as a metric
  571.      for this limitation.  Although not required, message munging
  572.      agents may re-fold headers if (and only if) this limitation is
  573.      exceeded.  Note however that under no circumstances should a
  574.      header be re-folded if it was not munged.  Refolding without
  575.      munging may occur on behalf of some transport or user agent,
  576.      but it may not occur on behalf of a munging agent.  Put more
  577.      simply, this memo does not authorize or forbid such activity,
  578.      although it does discourage it.
  579.  
  580.  
  581.     o Error Recovery
  582.  
  583.      The preceding discussion has made been under the assumption
  584.      that the objects composing the field/value pairs of the source
  585.      message have conformed to the source standard. It is an
  586.      unfortunate reality that this may not be the case. In fact,
  587.  
  588.  
  589. Page 9
  590.  
  591. Request For Comments:  886                      M. Rose
  592. Proposed Standard for Message Header Munging                 UCI
  593.  
  594.  
  595.      for those standards which are poorly specified (if at all),
  596.      determining that an object is improperly constructed might be
  597.      quite difficult.  In addition, it is possible, though
  598.      hopefully extremely improbable that a target canonical form
  599.      does not exist for a particular source canonical form.  In
  600.      these cases, munging agents must be able to recover.
  601.  
  602.      At this point, we introduce two extension fields for the 822
  603.      standard.  As such, these fields are hereby designated as
  604.      "reserved" and may not be used for other purposes.  These
  605.      fields are:
  606.  
  607.         Illegal-Field
  608.         Illegal-Object
  609.  
  610.      The syntax of these fields is as follows:
  611.  
  612.         munge-field =
  613.              "Illegal-Field"    ":" *text
  614.           /  "Illegal-Object"    ":" *text
  615.  
  616.         munge-object =
  617.              <a "field-name", the exact field-names which are
  618.               valid will be presented later>
  619.  
  620.      The semantics of these fields are as follows:
  621.  
  622.      An Illegal-Field header should be introduced when a
  623.      header-line which does not conform to the source standard is
  624.      found in the source message.  Illegal-Field should be used
  625.      only when a header-line is so poorly formed as to prevent
  626.      recognition of the field in the header-line.  For example, if
  627.      the line lacks a colon, or has a poorly formed field-name,
  628.      then it should not be output to the target message and a new
  629.      header-line should be introduced in its place.  This
  630.      header-line has Illegal-Field as its field and contains the
  631.      offending line as its value.  Illegal-Field should not be used
  632.      if the field can be identified, but the value is poorly
  633.      formed.
  634.  
  635.      An Illegal-Object header should be introduced when an object
  636.      in the source message can not be parsed into a canonical form,
  637.      or if the canonical form it represents has no corresponding
  638.      target canonical form.  The offending object should not be
  639.      output to the target message in the header-line in which it
  640.      occurs.  If the header-line now contains no objects, then the
  641.      header-line should not be output to the target message as
  642.      well.  Then, an Illegal-Object field should be introduced into
  643.      the target message.  The value of this Illegal-Object field
  644.      should at the very minimum contain the name of the field that
  645.      contained the object, the object in question, and an
  646.  
  647.  
  648. Page 10
  649.  
  650. Request For Comments:  886                      M. Rose
  651. Proposed Standard for Message Header Munging                 UCI
  652.  
  653.  
  654.      explanation as to why the object was illegal.  Alternately,
  655.      the value of this Illegal-Object field should consist of the
  656.      entire header-line (field and value) that contained the object
  657.      in question along with an explanation as to why the object was
  658.      illegal.
  659.  
  660.           NOTE:  In the circumstance where multiple objects exist
  661.           in a single header-line in the source message, and one of
  662.           those objects is determined to be illegal, the actual
  663.           policy used in determining how much information can be
  664.           considered to be "uncorrupted" is left to the
  665.           implementors.  Munging agents which use sophisticated
  666.           parsers may attempt to recover in mid-stream (so to
  667.           speak) and continue parsing objects on the header-line.
  668.           Other agents may wish to continue recover with the next
  669.           header-line in the source message.  Regardless of the
  670.           policy used, the agent must present the contents of the
  671.           entire header-line in the associated Illegal-Object
  672.           header.
  673.  
  674.      Implementations should not take extraordinary measures to
  675.      perform syntax/semantics checking of the source message --
  676.      only those fields which must be examined should be rigorously
  677.      checked.  This memo strongly discourages any additional
  678.      examination.  It is not the intention of this memo to suggest
  679.      that composing agents should produce messages which do not
  680.      conform to the source standard.  A composing agent should not
  681.      expect a munging agent to enforce adherence to the source
  682.      standard.
  683.  
  684.  
  685.     o Introduction of Information
  686.  
  687.      Munging agents are authorized to introduce a "Received" header
  688.      into the target message when a message is transformed.
  689.  
  690.           NOTE:  Adding a "Received" header is entirely optional.
  691.           This memo strongly recommends that this header be
  692.           introduced whenever some munging (translation of addresses
  693.           and/or dates) occurs.
  694.  
  695.           NOTE:  Although this memo does not specify the position
  696.           that the introduced header should have in relation to the
  697.           other fields in the target message, it is strongly
  698.           recommended that the introduced header be grouped with
  699.           the other "Received" headers, at the very beginning of
  700.           the message.
  701.  
  702.      When introducing a "Received" field, three phrases, which are
  703.      normally optional in such a field, should be specified by the
  704.      munging agent.  These are:
  705.  
  706.  
  707. Page 11
  708.  
  709. Request For Comments:  886                      M. Rose
  710. Proposed Standard for Message Header Munging                 UCI
  711.  
  712.  
  713.  
  714.         "from" domain        # the source domain
  715.         "by"   domain        # the target domain
  716.         "with" protocol        # the munging agent's host
  717.  
  718.      For example, suppose we have a munging agent on the UCI host,
  719.      and that this agent services a USENET/ARPA boundary.  When the
  720.      UCI host gets a message from the USENET domain for the ARPA
  721.      domain, the following happens:  First, the UCI mailsystem would
  722.      prepend the header:
  723.  
  724.        Received: from nma by UCI with UUCP; 15 Dec 83 03:53:00 PST
  725.  
  726.      Second, the munging agent, when transforming the message,
  727.      would prepend the header:
  728.  
  729.        Received: from USENET by ARPA with UCI; 15 Dec 03:54:00 PST
  730.  
  731.      Finally, the UCI mailsystem would then deliver the message to
  732.      the appropriate ARPA mailsystem, which in turn would prepend
  733.      the header:
  734.  
  735.        Received: from UCI by ISIF with SMTP; 15 Dec 83 03:55:00 PST
  736.  
  737.      This example might be a bit clearer if the domains were
  738.      qualified a bit more.  The first three lines of the message
  739.      could look like this:
  740.  
  741.        Received: from UCI.ARPA by ISIF.ARPA; 15 Dec 83 03:55:00 PST
  742.        Received: from USENET by ARPA with UCI; 15 Dec 03:54:00 PST
  743.        Received: from nma.USENET by UCI.USENET; 15 Dec 83 03:53:00 PST
  744.  
  745.      The key point to notice is that the munging agent used the
  746.      "from" and "by" clauses to denote the domain boundary that was
  747.      crossed, and used the "with" clause to denote itself.  Since
  748.      the agent is munging the message according to some set of
  749.      transformation rules, it is actually using a "mail protocol",
  750.      and as such is justified in identifying itself in the "with"
  751.      clause.
  752.  
  753.  
  754.  
  755.  
  756.  
  757.  
  758.  
  759.  
  760.  
  761.  
  762.  
  763.  
  764.  
  765.  
  766. Page 12
  767.  
  768. Request For Comments:  886                      M. Rose
  769. Proposed Standard for Message Header Munging                 UCI
  770.  
  771.  
  772.               Objects of Interest
  773.  
  774.     At present, only three types of objects are of interest: fields,
  775.     addresses, and dates.  In the context of the 822 standard,
  776.     header-lines containing the following fields are to be viewed as
  777.     appropriate for transformation:
  778.  
  779.      Address Fields:    From, Sender, Reply-To, To, cc, Bcc,
  780.             and any of these fields with the Resent- prefix
  781.  
  782.     Date Fields:    Date, Resent-Date
  783.  
  784.     Hence the definition of munge-object, in 822 terms, is:
  785.  
  786.         munge-object =
  787.              "From"
  788.           /  "Sender"
  789.           /  "Reply-To"
  790.           /  "To"
  791.           /  "cc"
  792.           /  "Bcc"
  793.           /  "Resent-From"
  794.           /  "Resent-Sender"
  795.           /  "Resent-Reply-To"
  796.           /  "Resent-To"
  797.           /  "Resent-cc"
  798.           /  "Resent-Bcc"
  799.           /  "Date"
  800.           /  "Resent-Date"
  801.  
  802.      NOTE:  The list of munge-objects is extensible.  For the
  803.      purposes of this memo, the above fields are defined as the
  804.      MINIMUM list of munge-objects for the 822 standard.
  805.      Implementors are encouraged to introduce other fields to the
  806.      list of munge-objects as their munging agents require.  These
  807.      additions should also be registered with the revisions of this
  808.      memo as they gain popularity.
  809.  
  810.     For the purposes of the remainder of this memo, an address
  811.     header-line is defined as any header-line in the source message
  812.     whose field component is one of the fields listed above as an
  813.     address field.  Further, a date header-line is defined as any
  814.     header-line in the source message whose field component is one of
  815.     the fields listed above as an date field.
  816.  
  817.     If address munging is performed, then all addresses contained in
  818.     all address header-lines must be munged.  It is expressly forbidden
  819.     to perform address munging on the source message and without
  820.     performing address munging on every address header-line.  Further,
  821.     it is expressly forbidden to munge some, but not all, of the
  822.     addresses in any address header-line.  All addresses in all of the
  823.  
  824.  
  825. Page 13
  826.  
  827. Request For Comments:  886                      M. Rose
  828. Proposed Standard for Message Header Munging                 UCI
  829.  
  830.  
  831.     message's address header-lines must be address munged. If address
  832.     munging is not performed, then these header-lines need not be
  833.     considered for munging.
  834.  
  835.     A similar requirement is made for date munging.  If date munging is
  836.     performed, then all instances of header-lines whose field is Date
  837.     or Resent-Date must be fully date munged.
  838.  
  839.      NOTE:  Certain fields are to be excluding from munging of any
  840.      sort, all munging agents must preserve their contents exactly.
  841.      At present, there is one such field: "Received".  This contents
  842.      of this field should ALWAYS be preserved for trace and
  843.      debugging purposes.
  844.  
  845.  
  846.  
  847.  
  848.  
  849.  
  850.  
  851.  
  852.  
  853.  
  854.  
  855.  
  856.  
  857.  
  858.  
  859.  
  860.  
  861.  
  862.  
  863.  
  864.  
  865.  
  866.  
  867.  
  868.  
  869.  
  870.  
  871.  
  872.  
  873.  
  874.  
  875.  
  876.  
  877.  
  878.  
  879.  
  880.  
  881.  
  882.  
  883.  
  884. Page 14
  885.  
  886. Request For Comments:  886                      M. Rose
  887. Proposed Standard for Message Header Munging                 UCI
  888.  
  889.  
  890.  
  891.                  Bibliography
  892.  
  893.     D.H. Crocker, "Standard for the Format of ARPA Internet Text
  894.     Messages", RFC 822, (August, 1982).
  895.  
  896.     M.R. Horton, "Standard for the Interchange of USENET Messages", RFC
  897.     850, (June, 1983).
  898.  
  899.     M.T. Rose, "Achieving Interoperability between two Domains --
  900.     Connecting the ZOTnet and UUCP Computer Mail Networks", Technical
  901.     Report Number 201, Department of Information and Computer Science,
  902.     University of California, Irvine, (January, 1983).
  903.  
  904.     P.V. Mockapetris, "Domain Names -- Concepts and Facilities", RFC
  905.     882, (November, 1983).
  906.  
  907.  
  908.  
  909.  
  910.  
  911.  
  912.  
  913.  
  914.  
  915.  
  916.  
  917.  
  918.  
  919.  
  920.  
  921.  
  922.  
  923.  
  924.  
  925.  
  926.  
  927.  
  928.  
  929.  
  930.  
  931.  
  932.  
  933.  
  934.  
  935.  
  936.  
  937.  
  938.  
  939.  
  940.  
  941.  
  942.  
  943. Page 15
  944.  
  945. Request For Comments:  886                      M. Rose
  946. Proposed Standard for Message Header Munging                 UCI
  947.  
  948.  
  949.  
  950.                   Appendices
  951.  
  952.  
  953.             Minimal Canonical Forms
  954.  
  955.     This memo defines the minimal canonical forms for the 822 standard.
  956.     Implementations may wish to augment these forms with additional
  957.     information that may be present in the source message.  An earlier
  958.     example suggested that group membership might be part of an
  959.     address' canonical form.  Further, since the 822 standard permits
  960.     routes to be specified in addresses, e.g.,
  961.  
  962.     Fred Rated <@ISI-Troll.ARPA,@UCI-750a.UCI: FRated@UCI-750b>
  963.  
  964.     Perhaps they too should be considered part of the 822 address'
  965.     canonical form?
  966.  
  967.     This memo makes no such requirement, if implementations wish to
  968.     make use of this additional information, then they are free to do
  969.     so.  This practice is neither encouraged nor discouraged. In short
  970.     the spirit of this memo is to require those minimal components
  971.     required by the 822 standard, nothing more.
  972.  
  973.  
  974.  
  975.  
  976.  
  977.  
  978.  
  979.  
  980.  
  981.  
  982.  
  983.  
  984.  
  985.  
  986.  
  987.  
  988.  
  989.  
  990.  
  991.  
  992.  
  993.  
  994.  
  995.  
  996.  
  997.  
  998.  
  999.  
  1000.  
  1001.  
  1002. Page 16
  1003.